package com.wangxl;

import lombok.extern.slf4j.Slf4j;

import java.util.Arrays;

/**
 * String 操作
 * @author wangxl
 * @date 2022/2/17 13:04
 */
@Slf4j
public class StringOperate {

    /**
     * 主函数
     * @param args 参数
     */
    public static void main(String[] args) {

        // String 的 concat用法
        String a = "abc";
        String b = a.concat("def");
        log.info("使用concat拼接String" + b);

        // String 的 +
        long startTime = System.nanoTime();
        String firstName = "Wang";
        String lastName = "Xiaoliang";
        String name = firstName + lastName +
                firstName + lastName +
                firstName + lastName +
                firstName + lastName +
                firstName + lastName;
        long endTime = System.nanoTime();
        log.info("测试使用 + 进行 String 的拼接，拼接用时：" + (endTime - startTime));

        // 使用StringBuilder 进行字符串拼接
        long startTime2 = System.nanoTime();
        StringBuilder userName = new StringBuilder();
        userName.append("Wang");
        userName.append("Xiaoliang");
        userName.append("Wang");
        userName.append("Xiaoliang");
        userName.append("Wang");
        userName.append("Xiaoliang");
        userName.append("Wang");
        userName.append("Xiaoliang");
        userName.append("Wang");
        userName.append("Xiaoliang");
        long endTime2 = System.nanoTime();

        log.info("使用StringBuilder进行字符串的拼接，拼接用时：" + (endTime2 - startTime2));

        // 使用StringBuffer 进行字符串拼接
        long startTime3 = System.nanoTime();
        StringBuffer content = new StringBuffer();
        content.append("Wang");
        content.append("Xiaoliang");
        content.append("Wang");
        content.append("Xiaoliang");
        content.append("Wang");
        content.append("Xiaoliang");
        content.append("Wang");
        content.append("Xiaoliang");
        content.append("Wang");
        content.append("Xiaoliang");
        long endTime3 = System.nanoTime();
        log.info("使用StringBuffer进行字符串的拼接, 拼接用时：" + (endTime3 - startTime3));

        String str = "brains";
        // String的charAt(index)方法：获取指定索引处的字符
        char c = str.charAt(0);
        log.info("str.charAt(0) = " + c);

        // length():获取字符串的长度
        log.info("str.length() = " + str.length());

        //String substring(int start,int end):从start开始，到end结束截取字符串。包括start，不包括end
        String sonStr = str.substring(0,3);

        // indexOf(String str):获取str在字符串对象中第一次出现的索引
        int i = str.indexOf(sonStr);
        log.info("str.indexof('bra') = " + i) ;

        // equals(Object obj):比较字符串的内容是否相同
        boolean equals = "brains".equals(str);
        log.info("'brains'.equals(str) = " + equals);

        // startsWith(String prefix):判断字符串对象是否以指定的字符开头（区分大小写）
        log.info("str.startsWith('b') = " + str.startsWith("b"));

        // endsWith(String str):判断字符串对象是否以指定的字符结尾
        log.info("str.endWith('s') = " + str.endsWith("s"));

        // isEmpty()：判断指定字符串是否为空
        log.info("str.isEmpty() = " + str.isEmpty());

        // toCharArray():把字符串转换为字符数组
        char[] chars = str.toCharArray();
        log.info("str.toCharArray() = " + Arrays.toString(chars));

        // toLowerCase():把字符串转换为小写字符串
        String newString = "WXL";
        log.info("newString.toLowerCase() = " + newString.toLowerCase());

        // toUpperCase():把字符串转换为大写字符串
        log.info("str.toUpperCase() = " + str.toLowerCase());

        // trim()：去除字符串两端空格
        newString = "   wangxl   ";
        log.info("newString.trim() = " + newString.trim());

        // contains(CharSequence s)：查看字符串中是都含有指定字符
        log.info("str.contains('b') = " + str.contains("b"));

    }
}
